package com.edu.ahm.thread;

/**
 * 静态代理模式
 * 总结：
 *     1. 真实对象 和 代理都要实现接口
 *     2. 代理对象 帮真实对象 代理
 *     3. 代理对象可以做很多 真实对象做不了的事情
 *
 */
public class StaticProxy  {
    public static void main(String[] args) {


        new Thread(()-> System.out.println(" i love you ")).start();



        new WeddingCompany(new You()).marry();

    }

}

interface Marry{
    // 人间四大喜事
    // 久旱逢甘露
    // 他乡遇故知sd
    // 洞房花烛夜
    // 金榜题名
    void marry();
}

class You implements Marry{

    @Override
    public void marry() {
        System.out.println("男方要结婚了，超开心");
    }
}

class WeddingCompany implements Marry{

    private Marry target;

    public WeddingCompany(Marry marry){
        this.target = marry;
    }

    @Override
    public void marry() {
        before();
        this.target.marry();
        after();
    }

    private void after() {
        System.out.println("结婚之后收尾款");
    }

    private void before() {
        System.out.println("结婚之前布置现场");
    }
}